home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / dir / RCS / opendir.c,v < prev    next >
Text File  |  1992-01-10  |  2KB  |  124 lines

  1. head     1.4;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.4
  10. date     92.01.10.15.44.17;  author mottsmth;  state Exp;
  11. branches ;
  12. next     1.3;
  13.  
  14. 1.3
  15. date     88.07.28.17.29.46;  author ouster;  state Exp;
  16. branches ;
  17. next     1.2;
  18.  
  19. 1.2
  20. date     88.07.25.10.40.34;  author ouster;  state Exp;
  21. branches ;
  22. next     1.1;
  23.  
  24. 1.1
  25. date     88.06.26.15.45.58;  author ouster;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.4
  35. log
  36. @Make sure it's a directory before we open it.
  37. @
  38. text
  39. @/*
  40.  * Copyright (c) 1983 Regents of the University of California.
  41.  * All rights reserved.  The Berkeley software License Agreement
  42.  * specifies the terms and conditions for redistribution.
  43.  */
  44.  
  45. #if defined(LIBC_SCCS) && !defined(lint)
  46. static char sccsid[] = "@@(#)opendir.c    5.2 (Berkeley) 3/9/86";
  47. #endif LIBC_SCCS and not lint
  48.  
  49. #include <stdlib.h>
  50. #include <sys/param.h>
  51. #include <sys/dir.h>
  52. #include <sys/file.h>
  53. #include <sys/stat.h>
  54. #include <errno.h>
  55.  
  56. /*
  57.  * open a directory.
  58.  */
  59. DIR *
  60. opendir(name)
  61.     char *name;
  62. {
  63.     register DIR *dirp;
  64.     register int fd;
  65.     struct stat statBuf;
  66.  
  67.     if (stat(name, &statBuf) == -1) {
  68.         return NULL;
  69.     }
  70.         if (!S_ISDIR(statBuf.st_mode)) {
  71.                 errno = ENOTDIR;
  72.         return NULL;
  73.     }
  74.     if ((fd = open(name, O_RDONLY, 0)) == -1) {
  75.         return NULL;
  76.     }
  77.     if ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL) {
  78.         close (fd);
  79.         return NULL;
  80.     }
  81.     dirp->dd_fd = fd;
  82.     dirp->dd_loc = 0;
  83.     return dirp;
  84. }
  85. @
  86.  
  87.  
  88. 1.3
  89. log
  90. @Lint.
  91. @
  92. text
  93. @d15 2
  94. d22 1
  95. a22 1
  96. opendir(name)
  97. d27 1
  98. d29 1
  99. a29 1
  100.     if ((fd = open(name, O_RDONLY, 0)) == -1)
  101. d31 8
  102. @
  103.  
  104.  
  105. 1.2
  106. log
  107. @Lint cleanup.
  108. @
  109. text
  110. @d14 1
  111. d26 1
  112. a26 1
  113.     if ((fd = open(name, 0)) == -1)
  114. @
  115.  
  116.  
  117. 1.1
  118. log
  119. @Initial revision
  120. @
  121. text
  122. @d11 1
  123. @
  124.